Device controllers are used in many applications where output devices need to be controlled such that their behavior is dependent on the information supplied by input devices and on rules defined for the device controller. The input devices and output devices will be referred to collectively as external devices. The device controller is told the properties and behavior of the input devices and the properties and behavior of the output devices. The device controller is additionally told the configuration of the input devices and of the output devices and the processing that is required to be done on the information supplied by the input devices in order to control the behavior of the output devices. This is typically implemented by software being written for a particular application.
If the configuration of the external devices changes, then the software must be rewritten to implement those configuration changes. Typically a change of configuration may involve the addition or deletion of external devices or a change in the characteristics of those external devices. If the logical processing that is required to be performed in response to the external devices changes, then the software must be rewritten to implement those changes in logical processing. Typically a change in logical processing may involve a change in the manner in which output devices respond to input devices. If there is a change in user requirements, then the software must also be rewritten to implement those changes in requirements. Typically a change in user requirements may involve a change in a time period that elapses between two events or the action taken by an output device in response to an input device.
A typical application of a device controller with external devices is a system for use at the entrance to a parking lot which might have a touch screen for displaying prompts or options to a driver or an operator, a machine to print tickets for the parking lot, a barrier to physically control access to the parking lot and a set of lights to indicate to the driver as to whether he can proceed or not. Another application of such a device controller might be to control an automated manufacturing “robot”. The robot is operating according to a set of rules within the device controller and is responsive to information from input devices to control output devices.
Conventionally, the rules and the characteristics and configuration of the external devices are implemented directly in the software such that the software must be reprogrammed if any changes are to be made to the rules, characteristics or configuration. Such reprogramming means that the system suffers from many of the well known software maintenance problems such as:
(i) the requirement for multiple versions of the software to support differing requirements;
(ii) the difficulty in maintaining a common code base as those requirements diverge over time;
(iii) a growth in the amount of code which has to be customized;
(iv) difficulties in distributing new versions of the software efficiently and securely;
(v) dilution or loss of knowledge about the software as the number of variants increases; and
(vi) associated problems in maintainability, service and service level agreements.
Supervisory Control And Data Acquisition (SCADA) devices called Programmable Logic Controllers (PLCs) use an approach of having an abstraction of the external devices and of the functions that can be performed by them, and a decoupling layer which abstracts the data representation, regardless of its source. One such SCADA device is Arcom Controls' “Director” device, details of which can be found at http://www.arcomcontrols.com/products/pcp/pcp9.htm.
FIG. 1 shows a device controller system 100 using such an approach. A device controller 102 receives input from external input devices 104, 106 and controls connected external output devices 108, 110. The device controller contains respective abstraction layers 114, 116, 118, 120 corresponding to each of the external devices together with information concerning the functions that can be performed by each of the external devices. The device controller further contains a decoupling layer 130 which abstracts the data. Rules and actions 132 are stored in the device controller and are typically implemented in a higher level “ladder logic” language such as IEC-1131 to monitor and respond to changing states in the devices, including monitoring and changing in response to time. These rules and actions are hard-coded into the device controller and in the event of updates to the rules or actions being required, the software must be rewritten.